package es.unileon.prg2.censo.adapter;

import es.unileon.prg2.censo.composite.Component;
import es.unileon.prg2.censo.iterator.Iterador;

/**
 * @author Manuel Molinos Crespo, Adrian Campazas Vega, Alberto Castro Delgado, Pedro Alvarez Alvarez, Adrian Cabello Galvan, Jose Alvaro Fernandez Alvarez
 *
 */

public interface Aggregate {
	/**
	 * Method used to created an treeIterator.
	 * @return The treeIterator that was created
	 */
	Iterador createIterator();
	
	/**
	 * Method used to created an citizenIterator.
	 * @param age An age for filter the citizens
	 * @param age2 The other age for filter the citizens
	 * @return The citizenIterator that was created
	 */
	Iterador createIterator(int age, int age2);
	
	/**
	 * Method used to know the size of the ArrayListAggregate.
	 * @return Int with the number of elements of the ArrayListAggregate
	 */
	int getSize ();
	
	/**
	 * Method used to return the object that you want of the ArrayListAggregate.
	 * @param index Int with the position where you want return the object
	 * @return The object that you want of the ArrayListAggregate
	 */
	Object getElement (int index);
	
	/**
	 * Method used to delete the object that you want of the ArrayListAggregate.
	 * @param index Int with the position where you want return the object
	 */
	void removeElement (int index);
}
